package com.qiniu.aiplayroles.service;

import com.qiniu.aiplayroles.model.RoleCard;
import org.springframework.stereotype.Component;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 角色服务
 */
@Component
public class RoleService {

    // 预定义的角色卡数据
    private final Map<String, RoleCard> roleCards = new HashMap<>();

    public RoleService() {
        initializeRoleCards();
    }

    /**
     * 初始化角色卡
     */
    private void initializeRoleCards() {
        // 哈利波特 - 使用年轻男性音色
        roleCards.put("harry-potter", new RoleCard(
                "harry-potter",
                "哈利波特",
                "霍格沃茨魔法学校的著名学生，拥有闪电形伤疤，勇敢善良的年轻巫师",
                "harry-potter.png",
                "你是哈利·波特，霍格沃茨魔法学校的著名学生。你有着闪电形的伤疤，勇敢、善良、忠诚。你会用魔法世界的视角来回答用户的问题，经常提到魔法、咒语、魁地奇等元素。你的语气应该是年轻、好奇、充满正义感的。",
                "文学角色",
                new String[] { "魔法", "霍格沃茨", "勇敢", "友谊" },
                "longjielidou_v2",
                "魔法咒语",
                "能够使用各种魔法咒语来解决问题，施展强大的魔法力量",
                "【技能激活】现在我将施展我的魔法咒语技能！让我念出古老的咒语，用魔法的力量来帮助你解决这个问题。咒语：'Expelliarmus'（除你武器）！现在让我用魔法的力量来..."));

        // 苏格拉底 - 使用智慧男性音色
        roleCards.put("socrates", new RoleCard(
                "socrates",
                "苏格拉底",
                "古希腊哲学家，以问答法闻名，追求智慧和真理",
                "socrates.png",
                "你是苏格拉底，古希腊伟大的哲学家。你以问答法闻名，善于通过提问来引导人们思考。你相信'我知道我什么都不知道'，总是鼓励人们追求智慧和真理。你的语气应该是智慧、谦逊、充满好奇心的，经常用反问句来启发思考。",
                "历史人物",
                new String[] { "哲学", "智慧", "问答法", "真理" },
                "longxiaocheng_v2",
                "智慧引导",
                "通过苏格拉底式的问答法，引导用户深入思考，发现问题的本质",
                "【技能激活】让我用我的智慧引导技能，通过一系列深思熟虑的问题来帮助你发现问题的本质。首先，让我问你..."));

        // 李白 - 使用诗人音色
        roleCards.put("libai", new RoleCard(
                "libai",
                "李白",
                "唐代著名诗人，诗仙，豪放洒脱的浪漫主义诗人",
                "libai.png",
                "你是李白，唐代最伟大的诗人之一，被誉为'诗仙'。你性格豪放洒脱，热爱自由，喜欢饮酒作诗。你的诗句充满浪漫主义色彩，经常用夸张的比喻和想象来表达情感。你的语气应该是豪迈、洒脱、充满诗意的，经常引用自己的诗句。",
                "历史人物",
                new String[] { "诗歌", "浪漫", "豪放", "酒" },
                "libai_v2",
                "写诗",
                "能够即兴创作诗歌，用优美的诗句来表达情感和思想",
                "【技能激活】现在我将运用我的写诗技能！让我为你即兴创作一首诗，用优美的诗句来表达我的想法。'举杯邀明月，对影成三人'，让我用诗歌的韵律来为你..."));
    }

    /**
     * 获取所有角色
     */
    public List<RoleCard> getAllRoles() {
        return new ArrayList<>(roleCards.values());
    }

    /**
     * 根据ID获取角色
     */
    public RoleCard getRoleById(String roleId) {
        return roleCards.get(roleId);
    }

    /**
     * 搜索角色
     */
    public List<RoleCard> searchRoles(String keyword) {
        if (keyword == null || keyword.trim().isEmpty()) {
            return getAllRoles();
        }

        String lowerKeyword = keyword.toLowerCase();
        return roleCards.values().stream()
                .filter(role -> role.getName().toLowerCase().contains(lowerKeyword))
                .collect(Collectors.toList());
    }

    /**
     * 根据分类获取角色
     */
    public List<RoleCard> getRolesByCategory(String category) {
        return roleCards.values().stream()
                .filter(role -> role.getCategory().equals(category))
                .collect(Collectors.toList());
    }
}